From: Florian Müllner Date: Mon, 17 Dec 2018 18:08:38 +0000 (+0100) Subject: calendar: Remove events section from message list X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~305 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d36a1808528748e393ee740d339da8754b1ad8cf;p=gnome-shell.git calendar: Remove events section from message list While treating notifications as a type of present event was a neat concept, there are some issues with it that we never managed to address (not least the inability to "open" an event). So remove the current events section from the message list; we'll bring back events in a different form later. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1282 --- diff --git a/js/ui/calendar.js b/js/ui/calendar.js index 35308c359..e048cd086 100644 --- a/js/ui/calendar.js +++ b/js/ui/calendar.js @@ -14,7 +14,6 @@ const { loadInterfaceXML } = imports.misc.fileUtils; var MSECS_IN_DAY = 24 * 60 * 60 * 1000; var SHOW_WEEKDATE_KEY = 'show-weekdate'; -var ELLIPSIS_CHAR = '\u2026'; var MESSAGE_ICON_SIZE = -1; // pick up from CSS @@ -723,67 +722,6 @@ var Calendar = GObject.registerClass({ } }); -var EventMessage = GObject.registerClass( -class EventMessage extends MessageList.Message { - _init(event, date) { - super._init('', ''); - - this._date = date; - - this.update(event); - - this._icon = new St.Icon({ icon_name: 'x-office-calendar-symbolic' }); - this.setIcon(this._icon); - } - - vfunc_style_changed() { - let iconVisible = this.get_parent().has_style_pseudo_class('first-child'); - this._icon.opacity = iconVisible ? 255 : 0; - super.vfunc_style_changed(); - } - - update(event) { - this._event = event; - - this.setTitle(this._formatEventTime()); - this.setBody(event.summary); - } - - _formatEventTime() { - let periodBegin = _getBeginningOfDay(this._date); - let periodEnd = _getEndOfDay(this._date); - let allDay = this._event.allDay || (this._event.date <= periodBegin && - this._event.end >= periodEnd); - let title; - if (allDay) { - /* Translators: Shown in calendar event list for all day events - * Keep it short, best if you can use less then 10 characters - */ - title = C_("event list time", "All Day"); - } else { - let date = this._event.date >= periodBegin - ? this._event.date - : this._event.end; - title = Util.formatTime(date, { timeOnly: true }); - } - - let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL; - if (this._event.date < periodBegin && !this._event.allDay) { - if (rtl) - title = '%s%s'.format(title, ELLIPSIS_CHAR); - else - title = '%s%s'.format(ELLIPSIS_CHAR, title); - } - if (this._event.end > periodEnd && !this._event.allDay) { - if (rtl) - title = '%s%s'.format(ELLIPSIS_CHAR, title); - else - title = '%s%s'.format(title, ELLIPSIS_CHAR); - } - return title; - } -}); - var NotificationMessage = GObject.registerClass( class NotificationMessage extends MessageList.Message { _init(notification) { @@ -849,149 +787,6 @@ class NotificationMessage extends MessageList.Message { } }); -var EventsSection = GObject.registerClass( -class EventsSection extends MessageList.MessageListSection { - _init() { - super._init(); - - this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); - this._desktopSettings.connect('changed', this._reloadEvents.bind(this)); - this._eventSource = new EmptyEventSource(); - - this._messageById = new Map(); - - this._title = new St.Button({ style_class: 'events-section-title', - label: '', - can_focus: true }); - this._title.child.x_align = Clutter.ActorAlign.START; - this.insert_child_below(this._title, null); - - this._title.connect('clicked', this._onTitleClicked.bind(this)); - this._title.connect('key-focus-in', this._onKeyFocusIn.bind(this)); - - this._appSys = Shell.AppSystem.get_default(); - this._appSys.connect('installed-changed', - this._appInstalledChanged.bind(this)); - this._appInstalledChanged(); - } - - setEventSource(eventSource) { - if (!(eventSource instanceof EventSourceBase)) - throw new Error('Event source is not valid type'); - - this._eventSource = eventSource; - this._eventSource.connect('changed', this._reloadEvents.bind(this)); - } - - get allowed() { - return Main.sessionMode.showCalendarEvents; - } - - _updateTitle() { - this._title.visible = !isToday(this._date); - - if (!this._title.visible) - return; - - let dayFormat; - let now = new Date(); - if (sameYear(this._date, now)) { - /* Translators: Shown on calendar heading when selected day occurs on current year */ - dayFormat = Shell.util_translate_time_string(NC_("calendar heading", "%A, %B %-d")); - } else { - /* Translators: Shown on calendar heading when selected day occurs on different year */ - dayFormat = Shell.util_translate_time_string(NC_("calendar heading", "%A, %B %-d, %Y")); - } - this._title.label = this._date.toLocaleFormat(dayFormat); - } - - _reloadEvents() { - if (this._eventSource.isLoading || this._reloading) - return; - - this._reloading = true; - - let periodBegin = _getBeginningOfDay(this._date); - let periodEnd = _getEndOfDay(this._date); - let events = this._eventSource.getEvents(periodBegin, periodEnd); - - let ids = events.map(e => e.id); - this._messageById.forEach((message, id) => { - if (ids.includes(id)) - return; - this._messageById.delete(id); - this.removeMessage(message); - }); - - for (let i = 0; i < events.length; i++) { - let event = events[i]; - - let message = this._messageById.get(event.id); - if (!message) { - message = new EventMessage(event, this._date); - this._messageById.set(event.id, message); - this.addMessage(message, false); - } else { - message.update(event); - this.moveMessage(message, i, false); - } - } - - this._reloading = false; - this._sync(); - } - - _appInstalledChanged() { - this._calendarApp = undefined; - this._title.reactive = this._getCalendarApp() != null; - } - - _getCalendarApp() { - if (this._calendarApp !== undefined) - return this._calendarApp; - - let apps = Gio.AppInfo.get_recommended_for_type('text/calendar'); - if (apps && (apps.length > 0)) { - let app = Gio.AppInfo.get_default_for_type('text/calendar', false); - let defaultInRecommended = apps.some(a => a.equal(app)); - this._calendarApp = defaultInRecommended ? app : apps[0]; - } else { - this._calendarApp = null; - } - return this._calendarApp; - } - - _onTitleClicked() { - Main.overview.hide(); - Main.panel.closeCalendar(); - - let appInfo = this._getCalendarApp(); - if (appInfo.get_id() === 'org.gnome.Evolution.desktop') { - let app = this._appSys.lookup_app('evolution-calendar.desktop'); - if (app) - appInfo = app.app_info; - } - appInfo.launch([], global.create_app_launch_context(0, -1)); - } - - setDate(date) { - super.setDate(date); - this._updateTitle(); - this._reloadEvents(); - } - - _shouldShow() { - return !this.empty || !isToday(this._date); - } - - _sync() { - if (this._reloading) - return; - - super._sync(); - } -}); - var TimeLabel = GObject.registerClass( class NotificationTimeLabel extends St.Label { _init(datetime) { @@ -1235,9 +1030,6 @@ class CalendarMessageList extends St.Widget { this._notificationSection = new NotificationSection(); this._addSection(this._notificationSection); - this._eventsSection = new EventsSection(); - this._addSection(this._eventsSection); - Main.sessionMode.connect('updated', this._sync.bind(this)); } @@ -1274,10 +1066,6 @@ class CalendarMessageList extends St.Widget { this._clearButton.reactive = canClear; } - setEventSource(eventSource) { - this._eventsSection.setEventSource(eventSource); - } - setDate(date) { this._sectionList.get_children().forEach(s => s.setDate(date)); this._placeholder.setDate(date); diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js index 034050d19..681968dc1 100644 --- a/js/ui/dateMenu.js +++ b/js/ui/dateMenu.js @@ -697,7 +697,6 @@ class DateMenuButton extends PanelMenu.Button { this._eventSource.destroy(); this._calendar.setEventSource(eventSource); - this._messageList.setEventSource(eventSource); this._eventSource = eventSource; }